﻿using sistem.Korisnicke_kontrole;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace sistem
{
    public partial class PedagogForma : Form
    {
        private Pedagog pedagog;

        public PedagogForma()
        {
            InitializeComponent();
        }

        public PedagogForma(Pedagog pedagog)
        {
            // TODO: Complete member initialization
            InitializeComponent();
            this.pedagog = pedagog;
            this.label2.Text = pedagog.Ime + " " + pedagog.Prezime;
            this.label4.Text = Convert.ToString(pedagog.PocetakSluzbe);
            this.label6.Text = Convert.ToString(DateTime.Now.Year - pedagog.PocetakSluzbe.Year);
            this.label8.Text = pedagog.Tip;
            this.richTextBox1.Text = pedagog.CV;

            this.korisnikKontrola1.postaviUser(pedagog.Username);
            this.korisnikKontrola1.postaviKorisnickiTip("Pedagog");
            this.korisnikKontrola1.spremiKontrole(this.buttonRaspored, this.buttonPredmeti, this.buttonRazrednistvo, this.buttonUcenici);
            this.korisnikKontrola1.ucitajFlow(this.flowPanelPretraga);
            this.korisnikKontrola1.postaviEvent();
        }

        private void funkcijaZatvaranjaButtona(FlowLayoutPanel parametar)
        {
            List<Button> buttoni = new List<Button>();
            List<FlowLayoutPanel> flowPaneli = new List<FlowLayoutPanel>();
            foreach (Control c in parametar.Controls)
            {
                if (c is Button)
                    buttoni.Add(c as Button);
                if (c is FlowLayoutPanel)
                    flowPaneli.Add(c as FlowLayoutPanel);
            }
            if (buttoni.Count != 0)
            {
                for (int i = 0; i < buttoni.Count; i++)
                {
                    if (buttoni[i].Text[0] == '-')
                    {
                        buttoni[i].PerformClick();
                    }
                }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (buttonRaspored.Text[0] == '+')
            {
                flowPanelRaspored.Size = new System.Drawing.Size(1200, 360);
                buttonRaspored.Text = '-' + buttonRaspored.Text.Remove(0, 1);
                RasporedZaKorisnike r = new RasporedZaKorisnike(pedagog as Korisnik);
                flowPanelRaspored.Controls.Add(r);
            }
            else
            {
                flowPanelRaspored.Size = new System.Drawing.Size(1200, 0);
                flowPanelRaspored.Controls.Clear();
                buttonRaspored.Text = '+' + buttonRaspored.Text.Remove(0, 1);
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (buttonPredmeti.Text[0] == '+')
            {
                DAL.DAL dal = DAL.DAL.Instanca;
                dal.kreirajKonekciju("127.0.0.1", "skola", "root", "");
                DAL.DAL.ProfesorPredmetVezaDAO ppvdao = new DAL.DAL.ProfesorPredmetVezaDAO();
                List<ProfesorPredmetVeza> profaPred = ppvdao.getByProfesorId(pedagog.ID);
                List<Predmet> predmeti = new List<Predmet>();
                foreach (ProfesorPredmetVeza ppv in profaPred)
                {
                    DAL.DAL.PredmetDAO pdao = new DAL.DAL.PredmetDAO();
                    Predmet pred = pdao.getById(ppv.PredmetID);
                    predmeti.Add(pred);
                }
                buttonPredmeti.Text = '-' + buttonPredmeti.Text.Remove(0, 1);
                int brojPredmetaKojeDrzi = predmeti.Count;
                flowPanelPredmeti.Size = new Size(1200, 30 * brojPredmetaKojeDrzi);
                for (int i = 0; i < brojPredmetaKojeDrzi; i++)
                {
                    Button buttonPojediniPredmet = new Button();
                    buttonPojediniPredmet.BackColor = Color.RoyalBlue;
                    buttonPojediniPredmet.Dock = DockStyle.Top;
                    buttonPojediniPredmet.FlatStyle = FlatStyle.Popup;
                    buttonPojediniPredmet.Location = new Point(0, 0);
                    buttonPojediniPredmet.Margin = new Padding(0, 0, 0, 0);
                    buttonPojediniPredmet.Size = new Size(1200, 30);
                    buttonPojediniPredmet.Text = "+ " + predmeti[i].PuniNaziv;
                    buttonPojediniPredmet.TextAlign = ContentAlignment.MiddleLeft;
                    buttonPojediniPredmet.UseVisualStyleBackColor = false;
                    buttonPojediniPredmet.Click += delegate { buttonPojediniPredmet_Click(buttonPojediniPredmet, e, predmeti[i]); };
                    FlowLayoutPanel flowPojediniPredmet = new FlowLayoutPanel();
                    flowPojediniPredmet.Dock = System.Windows.Forms.DockStyle.Top;
                    flowPojediniPredmet.Location = new Point(0, 0);
                    flowPojediniPredmet.Margin = new Padding(0, 0, 0, 0);
                    flowPojediniPredmet.Size = new Size(1200, 0);
                    flowPanelPredmeti.Controls.Add(buttonPojediniPredmet);
                    flowPanelPredmeti.Controls.Add(flowPojediniPredmet);
                }
                dal.terminirajKonekciju();
            }
            else
            {
                buttonPredmeti.Text = '+' + buttonPredmeti.Text.Remove(0, 1);
                flowPanelPredmeti.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowPanelPredmeti);
                flowPanelPredmeti.Controls.Clear();
            }
        }


        private void buttonPojediniPredmet_Click(object sender, EventArgs e, Predmet p)
        {
            Button buttonPojediniPredmet = sender as Button;
            DAL.DAL dal = DAL.DAL.Instanca;
            dal.kreirajKonekciju("127.0.0.1", "skola", "root", "");
            DAL.DAL.ProfesorPredmetVezaDAO ppvdao = new DAL.DAL.ProfesorPredmetVezaDAO();
            List<ProfesorPredmetVeza> profaPred = ppvdao.getByProfesorId(pedagog.ID);
            foreach (ProfesorPredmetVeza ppv in profaPred)
            {
                if (ppv.PredmetID != p.ID)
                    profaPred.Remove(ppv);
            }
            List<Razred> razredi = new List<Razred>();
            foreach (ProfesorPredmetVeza ppv in profaPred)
            {
                DAL.DAL.RazredDAO rdao = new DAL.DAL.RazredDAO();
                Razred r = rdao.getById(ppv.RazredID);
                razredi.Add(r);
            }
            FlowLayoutPanel flowPojediniPredmet = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in flowPanelPredmeti.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonPojediniPredmet == listaButtona[i])
                {
                    flowPojediniPredmet = listaPanela[i];
                    break;
                }
            }
            dal.terminirajKonekciju();
            int brojOdjeljenjaKojeDrzi = razredi.Count;
            if (buttonPojediniPredmet.Text[0] == '+')
            {
                buttonPojediniPredmet.Text = '-' + buttonPojediniPredmet.Text.Remove(0, 1);
                flowPojediniPredmet.Size = new Size(1200, 30 * brojOdjeljenjaKojeDrzi);
                flowPanelPredmeti.Height = flowPanelPredmeti.Height + 30 * brojOdjeljenjaKojeDrzi;
                for (int i = 0; i < brojOdjeljenjaKojeDrzi; i++)
                {
                    Button buttonPojedinoOdjeljenje = new Button();
                    buttonPojedinoOdjeljenje.BackColor = Color.CornflowerBlue;
                    buttonPojedinoOdjeljenje.Dock = DockStyle.Top;
                    buttonPojedinoOdjeljenje.FlatStyle = FlatStyle.Popup;
                    buttonPojedinoOdjeljenje.Location = new Point(1, 1 + 30 * i);
                    buttonPojedinoOdjeljenje.Margin = new Padding(0, 0, 0, 0);
                    buttonPojedinoOdjeljenje.Size = new Size(1200, 30);
                    buttonPojedinoOdjeljenje.Text = "+ " + razredi[i].Godina + "-" + razredi[i].Odjeljenje;
                    buttonPojedinoOdjeljenje.TextAlign = ContentAlignment.MiddleLeft;
                    buttonPojedinoOdjeljenje.UseVisualStyleBackColor = false;
                    buttonPojedinoOdjeljenje.Click += delegate { buttonPojedinoOdjeljenje_Click(buttonPojedinoOdjeljenje, e, p, razredi[i]); };
                    FlowLayoutPanel flowPojedinoOdjeljenje = new FlowLayoutPanel();
                    flowPojedinoOdjeljenje.Dock = System.Windows.Forms.DockStyle.Top;
                    flowPojedinoOdjeljenje.Location = new System.Drawing.Point(1, 71);
                    flowPojedinoOdjeljenje.Margin = new Padding(0, 0, 0, 0);
                    flowPojedinoOdjeljenje.Size = new Size(1200, 0);
                    flowPojediniPredmet.Controls.Add(buttonPojedinoOdjeljenje);
                    flowPojediniPredmet.Controls.Add(flowPojedinoOdjeljenje);
                }
            }
            else
            {
                buttonPojediniPredmet.Text = '+' + buttonPojediniPredmet.Text.Remove(0, 1);
                flowPanelPredmeti.Height = flowPanelPredmeti.Height - 30 * brojOdjeljenjaKojeDrzi;
                flowPojediniPredmet.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowPojediniPredmet);
                flowPojediniPredmet.Controls.Clear();
            }
        }

        private void buttonPojedinoOdjeljenje_Click(Object sender, EventArgs e, Predmet p, Razred r)
        {
            Button buttonPojedinoOdjeljenje = sender as Button;
            FlowLayoutPanel flowPojedinoOdjeljenje = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonPojedinoOdjeljenje.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonPojedinoOdjeljenje == listaButtona[i])
                {
                    flowPojedinoOdjeljenje = listaPanela[i];
                    break;
                }
            }
            if (buttonPojedinoOdjeljenje.Text[0] == '+')
            {
                buttonPojedinoOdjeljenje.Text = '-' + buttonPojedinoOdjeljenje.Text.Remove(0, 1);
                flowPanelPredmeti.Height = flowPanelPredmeti.Height + 90;
                flowPojedinoOdjeljenje.Parent.Height = flowPojedinoOdjeljenje.Parent.Height + 90;
                for (int i = 0; i < 3; i++)
                {
                    Button button = new Button();
                    button.BackColor = Color.LightSteelBlue;
                    button.Location = new Point(0, 30 * i);
                    button.Dock = DockStyle.Top;
                    button.FlatStyle = FlatStyle.Popup;
                    button.Margin = new Padding(0, 0, 0, 0);
                    button.Size = new Size(1200, 30);
                    if (i == 0)
                    {
                        button.Text = "+ Casovi";
                        button.Click += delegate { buttonCasovi_Click(button, e, p, r); };
                    }
                    else if (i == 1)
                    {
                        button.Text = "+ Ucenici";
                        button.Click += delegate { buttonUcenici_Click(button, e, p, r); };
                    }
                    else
                    {
                        button.Text = "+ Zakljucivanje ocjena";
                        button.Click += delegate { buttonZakljucivanjeOcjena_Click(button, e, p, r); };
                    }
                    button.TextAlign = ContentAlignment.MiddleLeft;
                    button.UseVisualStyleBackColor = false;
                    FlowLayoutPanel flow = new FlowLayoutPanel();
                    flow.Dock = System.Windows.Forms.DockStyle.Top;
                    flow.Location = new System.Drawing.Point(1, 71);
                    flow.Margin = new Padding(0, 0, 0, 0);
                    flow.Size = new Size(1200, 0);
                    flowPojedinoOdjeljenje.Controls.Add(button);
                    flowPojedinoOdjeljenje.Controls.Add(flow);
                    flowPojedinoOdjeljenje.Size = new Size(1200, 90);
                }
            }
            else
            {
                buttonPojedinoOdjeljenje.Text = '+' + buttonPojedinoOdjeljenje.Text.Remove(0, 1);
                flowPanelPredmeti.Height = flowPanelPredmeti.Height - 90;
                flowPojedinoOdjeljenje.Parent.Height = flowPojedinoOdjeljenje.Parent.Height - 90;
                funkcijaZatvaranjaButtona(flowPojedinoOdjeljenje);
                flowPojedinoOdjeljenje.Size = new Size(1200, 0);
                flowPojedinoOdjeljenje.Controls.Clear();
            }
        }




        private void buttonCasovi_Click(object sender, EventArgs e, Predmet p, Razred r)
        {
            Button buttonCasovi = sender as Button;
            FlowLayoutPanel flowCasovi = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonCasovi.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonCasovi == listaButtona[i])
                {
                    flowCasovi = listaPanela[i];
                    break;
                }
            }
            if (buttonCasovi.Text[0] == '+')
            {
                buttonCasovi.Text = '-' + buttonCasovi.Text.Remove(0, 1);
                flowCasovi.Size = new Size(1200, 215);
                flowPanelPredmeti.Height = flowPanelPredmeti.Height + 215;
                flowCasovi.Parent.Height = flowCasovi.Parent.Height + 215;
                flowCasovi.Parent.Parent.Height = flowCasovi.Parent.Parent.Height + 215;
                CasKontrola casovi = new CasKontrola(pedagog, p.ID, r.ID);
                flowCasovi.Controls.Add(casovi);
            }
            else
            {
                buttonCasovi.Text = '+' + buttonCasovi.Text.Remove(0, 1);
                flowCasovi.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowCasovi);
                flowPanelPredmeti.Height = flowPanelPredmeti.Height - 215;
                flowCasovi.Parent.Height = flowCasovi.Parent.Height - 215;
                flowCasovi.Parent.Parent.Height = flowCasovi.Parent.Parent.Height - 215;
                flowCasovi.Controls.Clear();
            }
        }


        private void buttonUcenici_Click(object sender, EventArgs e, Predmet p, Razred r)
        {
            Button buttonUcenici = sender as Button;
            FlowLayoutPanel flowUcenici = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonUcenici.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonUcenici == listaButtona[i])
                {
                    flowUcenici = listaPanela[i];
                    break;
                }
            }
            DAL.DAL dal = DAL.DAL.Instanca;
            dal.kreirajKonekciju("127.0.0.1", "skola", "root", "");
            DAL.DAL.UcenikRazredVezaDAO urvdao = new DAL.DAL.UcenikRazredVezaDAO();
            List<UcenikRazredVeza> ucenikRazred = urvdao.getByRazredId(r.ID);
            List<Ucenik> ucenici = new List<Ucenik>();
            foreach (UcenikRazredVeza urv in ucenikRazred)
            {
                DAL.DAL.UcenikDAO udao = new DAL.DAL.UcenikDAO();
                Ucenik uc = udao.getById(urv.UcenikID);
                ucenici.Add(uc);
            }
            dal.terminirajKonekciju();
            int brojUcenika = ucenici.Count;
            if (buttonUcenici.Text[0] == '+')
            {
                buttonUcenici.Text = '-' + buttonUcenici.Text.Remove(0, 1);
                flowUcenici.Height = flowUcenici.Height + 30 * brojUcenika;
                flowUcenici.Parent.Height = flowUcenici.Parent.Height + 30 * brojUcenika;
                flowUcenici.Parent.Parent.Height = flowUcenici.Parent.Parent.Height + 30 * brojUcenika;
                flowPanelPredmeti.Height = flowPanelPredmeti.Height + 30 * brojUcenika;
                for (int i = 0; i < brojUcenika; i++)
                {
                    Button buttonPojediniUcenici = new Button();
                    buttonPojediniUcenici.BackColor = Color.DeepSkyBlue;
                    buttonPojediniUcenici.Dock = DockStyle.Top;
                    buttonPojediniUcenici.FlatStyle = FlatStyle.Popup;
                    buttonPojediniUcenici.Location = new Point(1, 1 + 30 * i);
                    buttonPojediniUcenici.Margin = new Padding(0, 0, 0, 0);
                    buttonPojediniUcenici.Size = new Size(1200, 30);
                    buttonPojediniUcenici.Text = "+ " + ucenici[i].Ime + " " + ucenici[i].Prezime;
                    buttonPojediniUcenici.TextAlign = ContentAlignment.MiddleLeft;
                    buttonPojediniUcenici.UseVisualStyleBackColor = false;
                    buttonPojediniUcenici.Click += delegate { buttonPojediniUcenik_Click(buttonPojediniUcenici, e, p, r, ucenici[i]); };
                    FlowLayoutPanel flowPojediniUcenik = new FlowLayoutPanel();
                    flowPojediniUcenik.Dock = System.Windows.Forms.DockStyle.Top;
                    flowPojediniUcenik.Location = new System.Drawing.Point(1, 71);
                    flowPojediniUcenik.Margin = new Padding(0, 0, 0, 0);
                    flowPojediniUcenik.Size = new Size(1200, 0);
                    flowUcenici.Controls.Add(buttonPojediniUcenici);
                    flowUcenici.Controls.Add(flowPojediniUcenik);
                }
            }
            else
            {
                buttonUcenici.Text = '+' + buttonUcenici.Text.Remove(0, 1);
                flowUcenici.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowUcenici);
                flowUcenici.Parent.Height = flowUcenici.Parent.Height - 30 * brojUcenika;
                flowUcenici.Parent.Parent.Height = flowUcenici.Parent.Parent.Height - 30 * brojUcenika;
                flowPanelPredmeti.Height = flowPanelPredmeti.Height - 30 * brojUcenika;
                flowUcenici.Controls.Clear();
            }
        }

        private void buttonPojediniUcenik_Click(object sender, EventArgs e, Predmet p, Razred r, Ucenik u)
        {
            Button buttonPojediniUcenik = sender as Button;
            FlowLayoutPanel flowPojediniUcenik = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonPojediniUcenik.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonPojediniUcenik == listaButtona[i])
                {
                    flowPojediniUcenik = listaPanela[i];
                    break;
                }
            }
            if (buttonPojediniUcenik.Text[0] == '+')
            {
                buttonPojediniUcenik.Text = '-' + buttonPojediniUcenik.Text.Remove(0, 1);
                flowPojediniUcenik.Size = new Size(1200, 60);
                flowPojediniUcenik.Parent.Height = flowPojediniUcenik.Parent.Height + 60;
                flowPojediniUcenik.Parent.Parent.Height = flowPojediniUcenik.Parent.Parent.Height + 60;
                flowPojediniUcenik.Parent.Parent.Parent.Height = flowPojediniUcenik.Parent.Parent.Parent.Height + 60;
                flowPanelPredmeti.Height = flowPanelPredmeti.Height + 60;
                for (int i = 0; i < 2; i++)
                {
                    Button button = new Button();
                    button.BackColor = Color.LightBlue;
                    button.Location = new Point(0, 30 * i);
                    button.Dock = DockStyle.Top;
                    button.FlatStyle = FlatStyle.Popup;
                    button.Margin = new Padding(0, 0, 0, 0);
                    button.Size = new Size(1200, 30);
                    if (i == 0)
                    {
                        button.Text = "+ Prisustvo";
                        button.Click += delegate { buttonPrisustvo_Click(button, e, p, r, u); };
                    }
                    else
                    {
                        button.Text = "+ Ocjene";
                        button.Click += delegate { buttonOcjene_Click(button, e, p, r, u); };
                    }
                    button.TextAlign = ContentAlignment.MiddleLeft;
                    button.UseVisualStyleBackColor = false;
                    FlowLayoutPanel flow = new FlowLayoutPanel();
                    flow.Dock = System.Windows.Forms.DockStyle.Top;
                    flow.Location = new System.Drawing.Point(1, 71);
                    flow.Margin = new Padding(0, 0, 0, 0);
                    flow.Size = new Size(1200, 0);
                    flowPojediniUcenik.Controls.Add(button);
                    flowPojediniUcenik.Controls.Add(flow);
                }
            }
            else
            {
                buttonPojediniUcenik.Text = '+' + buttonPojediniUcenik.Text.Remove(0, 1);
                flowPojediniUcenik.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowPojediniUcenik);
                flowPojediniUcenik.Parent.Height = flowPojediniUcenik.Parent.Height - 60;
                flowPojediniUcenik.Parent.Parent.Height = flowPojediniUcenik.Parent.Parent.Height - 60;
                flowPojediniUcenik.Parent.Parent.Parent.Height = flowPojediniUcenik.Parent.Parent.Parent.Height - 60;
                flowPanelPredmeti.Height = flowPanelPredmeti.Height - 60;
                flowPojediniUcenik.Controls.Clear();
            }
        }

        private void buttonPrisustvo_Click(object sender, EventArgs e, Predmet p, Razred r, Ucenik u)
        {
            Button buttonPrisustvo = sender as Button;
            FlowLayoutPanel flowPrisustvo = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonPrisustvo.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonPrisustvo == listaButtona[i])
                {
                    flowPrisustvo = listaPanela[i];
                    break;
                }
            }
            if (buttonPrisustvo.Text[0] == '+')
            {
                buttonPrisustvo.Text = '-' + buttonPrisustvo.Text.Remove(0, 1);
                flowPrisustvo.Size = new Size(1200, 215);
                flowPrisustvo.Parent.Height = flowPrisustvo.Parent.Height + 215;
                flowPrisustvo.Parent.Parent.Height = flowPrisustvo.Parent.Parent.Height + 215;
                flowPrisustvo.Parent.Parent.Parent.Height = flowPrisustvo.Parent.Parent.Parent.Height + 215;
                flowPrisustvo.Parent.Parent.Parent.Parent.Height = flowPrisustvo.Parent.Parent.Parent.Parent.Height + 215;
                flowPanelPredmeti.Height = flowPanelPredmeti.Height + 215;
                PrisustvoKontrola prisustva = new PrisustvoKontrola(pedagog, u.ID, p.ID);
                flowPrisustvo.Controls.Add(prisustva);
            }
            else
            {
                buttonPrisustvo.Text = '+' + buttonPrisustvo.Text.Remove(0, 1);
                flowPrisustvo.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowPrisustvo);
                flowPrisustvo.Parent.Height = flowPrisustvo.Parent.Height - 215;
                flowPrisustvo.Parent.Parent.Height = flowPrisustvo.Parent.Parent.Height - 215;
                flowPrisustvo.Parent.Parent.Parent.Height = flowPrisustvo.Parent.Parent.Parent.Height - 215;
                flowPrisustvo.Parent.Parent.Parent.Parent.Height = flowPrisustvo.Parent.Parent.Parent.Parent.Height - 215;
                flowPanelPredmeti.Height = flowPanelPredmeti.Height - 215;
                flowPrisustvo.Controls.Clear();
            }
        }

        private void buttonOcjene_Click(object sender, EventArgs e, Predmet p, Razred r, Ucenik u)
        {
            Button buttonOcjene = sender as Button;
            FlowLayoutPanel flowOcjene = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonOcjene.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonOcjene == listaButtona[i])
                {
                    flowOcjene = listaPanela[i];
                    break;
                }
            }
            if (buttonOcjene.Text[0] == '+')
            {
                buttonOcjene.Text = '-' + buttonOcjene.Text.Remove(0, 1);
                flowOcjene.Size = new Size(1200, 215);
                flowOcjene.Parent.Height = flowOcjene.Parent.Height + 215;
                flowOcjene.Parent.Parent.Height = flowOcjene.Parent.Parent.Height + 215;
                flowOcjene.Parent.Parent.Parent.Height = flowOcjene.Parent.Parent.Parent.Height + 215;
                flowOcjene.Parent.Parent.Parent.Parent.Height = flowOcjene.Parent.Parent.Parent.Parent.Height + 215;
                flowPanelPredmeti.Height = flowPanelPredmeti.Height + 215;
                OcjenaKontrola ocjene = new OcjenaKontrola(pedagog, u.ID, p.ID);
                flowOcjene.Controls.Add(ocjene);
            }
            else
            {
                buttonOcjene.Text = '+' + buttonOcjene.Text.Remove(0, 1);
                flowOcjene.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowOcjene);
                flowOcjene.Parent.Height = flowOcjene.Parent.Height - 215;
                flowOcjene.Parent.Parent.Height = flowOcjene.Parent.Parent.Height - 215;
                flowOcjene.Parent.Parent.Parent.Height = flowOcjene.Parent.Parent.Parent.Height - 215;
                flowOcjene.Parent.Parent.Parent.Parent.Height = flowOcjene.Parent.Parent.Parent.Parent.Height - 215;
                flowPanelPredmeti.Height = flowPanelPredmeti.Height - 215;
                flowOcjene.Controls.Clear();
            }
        }

        private void buttonZakljucivanjeOcjena_Click(object sender, EventArgs e, Predmet p, Razred r)
        {
            Button buttonZakljucivanjeOcjena = sender as Button;
            FlowLayoutPanel flowZakljucivanjeOcjena = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonZakljucivanjeOcjena.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonZakljucivanjeOcjena == listaButtona[i])
                {
                    flowZakljucivanjeOcjena = listaPanela[i];
                    break;
                }
            }
            DAL.DAL dal = DAL.DAL.Instanca;
            dal.kreirajKonekciju("127.0.0.1", "skola", "root", "");
            DAL.DAL.UcenikRazredVezaDAO urvdao = new DAL.DAL.UcenikRazredVezaDAO();
            List<UcenikRazredVeza> ucenikRazred = urvdao.getByRazredId(r.ID);
            List<Ucenik> ucenici = new List<Ucenik>();
            foreach (UcenikRazredVeza urv in ucenikRazred)
            {
                DAL.DAL.UcenikDAO udao = new DAL.DAL.UcenikDAO();
                Ucenik uc = udao.getById(urv.UcenikID);
                ucenici.Add(uc);
            }
            dal.terminirajKonekciju();
            int brojUcenika = ucenici.Count;
            if (buttonZakljucivanjeOcjena.Text[0] == '+')
            {
                buttonZakljucivanjeOcjena.Text = '-' + buttonZakljucivanjeOcjena.Text.Remove(0, 1);
                flowZakljucivanjeOcjena.Height = flowZakljucivanjeOcjena.Height + 30 * brojUcenika;
                flowZakljucivanjeOcjena.Parent.Height = flowZakljucivanjeOcjena.Parent.Height + 30 * brojUcenika;
                flowZakljucivanjeOcjena.Parent.Parent.Height = flowZakljucivanjeOcjena.Parent.Parent.Height + 30 * brojUcenika;
                flowPanelPredmeti.Height = flowPanelPredmeti.Height + 30 * brojUcenika;
                for (int i = 0; i < brojUcenika; i++)
                {
                    Button buttonPojediniUcenik = new Button();
                    buttonPojediniUcenik.BackColor = Color.DeepSkyBlue;
                    buttonPojediniUcenik.Dock = DockStyle.Top;
                    buttonPojediniUcenik.FlatStyle = FlatStyle.Popup;
                    buttonPojediniUcenik.Location = new Point(1, 1 + 30 * i);
                    buttonPojediniUcenik.Margin = new Padding(0, 0, 0, 0);
                    buttonPojediniUcenik.Size = new Size(1200, 30);
                    buttonPojediniUcenik.Text = "+ " + ucenici[i].Ime + " " + ucenici[i].Prezime;
                    buttonPojediniUcenik.TextAlign = ContentAlignment.MiddleLeft;
                    buttonPojediniUcenik.UseVisualStyleBackColor = false;
                    buttonPojediniUcenik.Click += delegate { buttonPojediniUcenikZakljucivanje_Click(buttonPojediniUcenik, e, p, r, ucenici[i]); };
                    FlowLayoutPanel flowPojediniUcenik = new FlowLayoutPanel();
                    flowPojediniUcenik.Dock = System.Windows.Forms.DockStyle.Top;
                    flowPojediniUcenik.Location = new System.Drawing.Point(1, 71);
                    flowPojediniUcenik.Margin = new Padding(0, 0, 0, 0);
                    flowPojediniUcenik.Size = new Size(1200, 0);
                    flowZakljucivanjeOcjena.Controls.Add(buttonPojediniUcenik);
                    flowZakljucivanjeOcjena.Controls.Add(flowPojediniUcenik);
                }
            }
            else
            {
                buttonZakljucivanjeOcjena.Text = '+' + buttonZakljucivanjeOcjena.Text.Remove(0, 1);
                flowZakljucivanjeOcjena.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowZakljucivanjeOcjena);
                flowZakljucivanjeOcjena.Parent.Height = flowZakljucivanjeOcjena.Parent.Height - 30 * brojUcenika;
                flowZakljucivanjeOcjena.Parent.Parent.Height = flowZakljucivanjeOcjena.Parent.Parent.Height - 30 * brojUcenika;
                flowPanelPredmeti.Height = flowPanelPredmeti.Height - 30 * brojUcenika;
                flowZakljucivanjeOcjena.Controls.Clear();
            }
        }

        private void buttonPojediniUcenikZakljucivanje_Click(object sender, EventArgs e, Predmet p, Razred r, Ucenik u)
        {
            Button buttonPojediniUcenikZakljucivanje = sender as Button;
            FlowLayoutPanel flowPojediniUcenikZakljucivanje = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonPojediniUcenikZakljucivanje.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonPojediniUcenikZakljucivanje == listaButtona[i])
                {
                    flowPojediniUcenikZakljucivanje = listaPanela[i];
                    break;
                }
            }
            if (buttonPojediniUcenikZakljucivanje.Text[0] == '+')
            {
                buttonPojediniUcenikZakljucivanje.Text = '-' + buttonPojediniUcenikZakljucivanje.Text.Remove(0, 1);
                flowPojediniUcenikZakljucivanje.Size = new Size(1200, 215);
                flowPojediniUcenikZakljucivanje.Parent.Height = flowPojediniUcenikZakljucivanje.Parent.Height + 215;
                flowPojediniUcenikZakljucivanje.Parent.Parent.Height = flowPojediniUcenikZakljucivanje.Parent.Parent.Height + 215;
                flowPojediniUcenikZakljucivanje.Parent.Parent.Parent.Height = flowPojediniUcenikZakljucivanje.Parent.Parent.Parent.Height + 215;
                flowPanelPredmeti.Height = flowPanelPredmeti.Height + 215;
                ZakljucivanjeOcjenaKontrola zakljucna = new ZakljucivanjeOcjenaKontrola(pedagog, u.ID, p.ID);
                flowPojediniUcenikZakljucivanje.Controls.Add(zakljucna);
            }
            else
            {
                buttonPojediniUcenikZakljucivanje.Text = '+' + buttonPojediniUcenikZakljucivanje.Text.Remove(0, 1);
                flowPojediniUcenikZakljucivanje.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowPojediniUcenikZakljucivanje);
                flowPojediniUcenikZakljucivanje.Parent.Height = flowPojediniUcenikZakljucivanje.Parent.Height - 215;
                flowPojediniUcenikZakljucivanje.Parent.Parent.Height = flowPojediniUcenikZakljucivanje.Parent.Parent.Height - 215;
                flowPojediniUcenikZakljucivanje.Parent.Parent.Parent.Height = flowPojediniUcenikZakljucivanje.Parent.Parent.Parent.Height - 215;
                flowPanelPredmeti.Height = flowPanelPredmeti.Height - 215;
                flowPojediniUcenikZakljucivanje.Controls.Clear();
            }
        }

        private void btnRazrednistvo_Click(object sender, EventArgs e)
        {
            Button buttonRazrednistvo = sender as Button;
            if (buttonRazrednistvo.Text[0] == '+')
            {
                buttonRazrednistvo.Text = '-' + buttonRazrednistvo.Text.Remove(0, 1);
                flowPanelRazrednistvo.Height = flowPanelRazrednistvo.Height + 90;
                for (int i = 0; i < 3; i++)
                {
                    Button button = new Button();
                    button.BackColor = Color.RoyalBlue;
                    button.Location = new Point(0, 30 * i);
                    button.Dock = DockStyle.Top;
                    button.FlatStyle = FlatStyle.Popup;
                    button.Margin = new Padding(0, 0, 0, 0);
                    button.Size = new Size(1200, 30);
                    if (i == 0)
                    {
                        button.Text = "+ Dodatne napomene";
                        button.Click += new System.EventHandler(buttonDodatneNapomene_Click);
                    }
                    else if (i == 1)
                    {
                        button.Text = "+ Ucenici";
                        button.Click += new System.EventHandler(buttonUceniciRazrednistvo_Click);
                    }
                    else
                    {
                        button.Text = "+ Smanjenje vladanja";
                        button.Click += new System.EventHandler(buttonSmanjenjeVladanja_Click);
                    }
                    button.TextAlign = ContentAlignment.MiddleLeft;
                    button.UseVisualStyleBackColor = false;
                    FlowLayoutPanel flow = new FlowLayoutPanel();
                    flow.Dock = System.Windows.Forms.DockStyle.Top;
                    flow.Location = new System.Drawing.Point(1, 71);
                    flow.Margin = new Padding(0, 0, 0, 0);
                    flow.Size = new Size(1200, 0);
                    flowPanelRazrednistvo.Controls.Add(button);
                    flowPanelRazrednistvo.Controls.Add(flow);
                }
            }
            else
            {
                buttonRazrednistvo.Text = '+' + buttonRazrednistvo.Text.Remove(0, 1);
                flowPanelRazrednistvo.Size = new Size(1200, 0);
                flowPanelRazrednistvo.Controls.Clear();
            }
        }

        private void buttonDodatneNapomene_Click(object sender, EventArgs e)
        {
            Button buttonDodatneNapomene = sender as Button;
            FlowLayoutPanel flowDodatneNapomene = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in flowPanelRazrednistvo.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonDodatneNapomene == listaButtona[i])
                {
                    flowDodatneNapomene = listaPanela[i];
                    break;
                }
            }
            if (buttonDodatneNapomene.Text[0] == '+')
            {
                buttonDodatneNapomene.Text = '-' + buttonDodatneNapomene.Text.Remove(0, 1);
                flowDodatneNapomene.Size = new Size(1200, 215);
                flowPanelRazrednistvo.Height = flowPanelRazrednistvo.Height + 215;
                DodatneNapomeneKontrola dodatneNapomene = new DodatneNapomeneKontrola(pedagog);
                flowDodatneNapomene.Controls.Add(dodatneNapomene);
            }
            else
            {
                buttonDodatneNapomene.Text = '+' + buttonDodatneNapomene.Text.Remove(0, 1);
                flowPanelRazrednistvo.Height = flowPanelRazrednistvo.Height - 215;
                flowDodatneNapomene.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowDodatneNapomene);
                flowDodatneNapomene.Controls.Clear();
            }
        }

        private void buttonUceniciRazrednistvo_Click(object sender, EventArgs e)
        {
            Button buttonUcenici = sender as Button;
            FlowLayoutPanel flowUcenici = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonUcenici.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonUcenici == listaButtona[i])
                {
                    flowUcenici = listaPanela[i];
                    break;
                }
            }
            DAL.DAL dal = DAL.DAL.Instanca;
            dal.kreirajKonekciju("127.0.0.1", "skola", "root", "");
            DAL.DAL.UcenikRazredVezaDAO urvdao = new DAL.DAL.UcenikRazredVezaDAO();
            List<UcenikRazredVeza> ucenikRazred = urvdao.getByRazredId(pedagog.Razrednistvo.ID);
            List<Ucenik> ucenici = new List<Ucenik>();
            foreach (UcenikRazredVeza urv in ucenikRazred)
            {
                DAL.DAL.UcenikDAO udao = new DAL.DAL.UcenikDAO();
                Ucenik uc = udao.getById(urv.UcenikID);
                ucenici.Add(uc);
            }
            dal.terminirajKonekciju();
            int brojUcenika = ucenici.Count;
            if (buttonUcenici.Text[0] == '+')
            {
                buttonUcenici.Text = '-' + buttonUcenici.Text.Remove(0, 1);
                flowUcenici.Height = flowUcenici.Height + 30 * brojUcenika;
                flowPanelRazrednistvo.Height = flowPanelRazrednistvo.Height + 30 * brojUcenika;
                for (int i = 0; i < brojUcenika; i++)
                {
                    Button buttonPojediniUcenici = new Button();
                    buttonPojediniUcenici.BackColor = Color.CornflowerBlue;
                    buttonPojediniUcenici.Dock = DockStyle.Top;
                    buttonPojediniUcenici.FlatStyle = FlatStyle.Popup;
                    buttonPojediniUcenici.Location = new Point(1, 1 + 30 * i);
                    buttonPojediniUcenici.Margin = new Padding(0, 0, 0, 0);
                    buttonPojediniUcenici.Size = new Size(1200, 30);
                    buttonPojediniUcenici.Text = "+ " + ucenici[i].Ime + " " + ucenici[i].Prezime;
                    buttonPojediniUcenici.TextAlign = ContentAlignment.MiddleLeft;
                    buttonPojediniUcenici.UseVisualStyleBackColor = false;
                    buttonPojediniUcenici.Click += delegate { buttonPojediniUcenikRazrednistvo_Click(buttonPojediniUcenici, e, ucenici[i]); };
                    FlowLayoutPanel flowPojediniUcenik = new FlowLayoutPanel();
                    flowPojediniUcenik.Dock = System.Windows.Forms.DockStyle.Top;
                    flowPojediniUcenik.Location = new System.Drawing.Point(1, 71);
                    flowPojediniUcenik.Margin = new Padding(0, 0, 0, 0);
                    flowPojediniUcenik.Size = new Size(1200, 0);
                    flowUcenici.Controls.Add(buttonPojediniUcenici);
                    flowUcenici.Controls.Add(flowPojediniUcenik);
                }
            }
            else
            {
                buttonUcenici.Text = '+' + buttonUcenici.Text.Remove(0, 1);
                flowUcenici.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowUcenici);
                flowPanelRazrednistvo.Height = flowPanelRazrednistvo.Height - 30 * brojUcenika;
                flowUcenici.Controls.Clear();
            }
        }

        private void buttonPojediniUcenikRazrednistvo_Click(object sender, EventArgs e, Ucenik u)
        {
            Button buttonUcenici = sender as Button;
            FlowLayoutPanel flowUcenici = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonUcenici.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonUcenici == listaButtona[i])
                {
                    flowUcenici = listaPanela[i];
                    break;
                }
            }
            DAL.DAL dal = DAL.DAL.Instanca;
            dal.kreirajKonekciju("127.0.0.1", "skola", "root", "");
            DAL.DAL.RazredPredmetVezaDAO rpvdao = new DAL.DAL.RazredPredmetVezaDAO();
            List<RazredPredmetVeza> razredPredmet = rpvdao.getByRazredId(pedagog.Razrednistvo.ID);
            List<Predmet> predmetiRazreda = new List<Predmet>();
            foreach (RazredPredmetVeza rpv in razredPredmet)
            {
                DAL.DAL.PredmetDAO pdao = new DAL.DAL.PredmetDAO();
                Predmet pred = pdao.getById(rpv.PredmetID);
                predmetiRazreda.Add(pred);
            }
            dal.terminirajKonekciju();
            int brojPredmeta = predmetiRazreda.Count;
            if (buttonUcenici.Text[0] == '+')
            {
                buttonUcenici.Text = '-' + buttonUcenici.Text.Remove(0, 1);
                flowUcenici.Height = flowUcenici.Height + 30 * brojPredmeta;
                flowUcenici.Parent.Height = flowUcenici.Parent.Height + 30 * brojPredmeta;
                flowPanelRazrednistvo.Height = flowPanelRazrednistvo.Height + 30 * brojPredmeta;
                for (int i = 0; i < brojPredmeta; i++)
                {
                    Button buttonPojediniPredmeti = new Button();
                    buttonPojediniPredmeti.BackColor = Color.LightSteelBlue;
                    buttonPojediniPredmeti.Dock = DockStyle.Top;
                    buttonPojediniPredmeti.FlatStyle = FlatStyle.Popup;
                    buttonPojediniPredmeti.Location = new Point(1, 1 + 30 * i);
                    buttonPojediniPredmeti.Margin = new Padding(0, 0, 0, 0);
                    buttonPojediniPredmeti.Size = new Size(1200, 30);
                    buttonPojediniPredmeti.Text = "+ " + predmetiRazreda[i].PuniNaziv;
                    buttonPojediniPredmeti.TextAlign = ContentAlignment.MiddleLeft;
                    buttonPojediniPredmeti.UseVisualStyleBackColor = false;
                    buttonPojediniPredmeti.Click += delegate { buttonPojediniPredmetRazrednistvo_Click(buttonPojediniPredmeti, e, u, predmetiRazreda[i]); };
                    FlowLayoutPanel flowPojediniPredmet = new FlowLayoutPanel();
                    flowPojediniPredmet.Dock = System.Windows.Forms.DockStyle.Top;
                    flowPojediniPredmet.Location = new System.Drawing.Point(1, 71);
                    flowPojediniPredmet.Margin = new Padding(0, 0, 0, 0);
                    flowPojediniPredmet.Size = new Size(1200, 0);
                    flowUcenici.Controls.Add(buttonPojediniPredmeti);
                    flowUcenici.Controls.Add(flowPojediniPredmet);
                }
            }
            else
            {
                buttonUcenici.Text = '+' + buttonUcenici.Text.Remove(0, 1);
                flowUcenici.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowUcenici);
                flowUcenici.Parent.Height = flowUcenici.Parent.Height - 30 * brojPredmeta;
                flowPanelRazrednistvo.Height = flowPanelRazrednistvo.Height - 30 * brojPredmeta;
                flowUcenici.Controls.Clear();
            }
        }

        private void buttonPojediniPredmetRazrednistvo_Click(object sender, EventArgs e, Ucenik u, Predmet p)
        {
            Button buttonPojediniPredmetRazrednistvo = sender as Button;
            FlowLayoutPanel flowPojediniPredmetRazrednistvo = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonPojediniPredmetRazrednistvo.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonPojediniPredmetRazrednistvo == listaButtona[i])
                {
                    flowPojediniPredmetRazrednistvo = listaPanela[i];
                    break;
                }
            }
            if (buttonPojediniPredmetRazrednistvo.Text[0] == '+')
            {
                buttonPojediniPredmetRazrednistvo.Text = '-' + buttonPojediniPredmetRazrednistvo.Text.Remove(0, 1);
                flowPojediniPredmetRazrednistvo.Size = new Size(1200, 60);
                flowPojediniPredmetRazrednistvo.Parent.Height = flowPojediniPredmetRazrednistvo.Parent.Height + 60;
                flowPojediniPredmetRazrednistvo.Parent.Parent.Height = flowPojediniPredmetRazrednistvo.Parent.Parent.Height + 60;
                flowPanelRazrednistvo.Height = flowPanelRazrednistvo.Height + 60;
                for (int i = 0; i < 2; i++)
                {
                    Button button = new Button();
                    button.BackColor = Color.DeepSkyBlue;
                    button.Location = new Point(0, 30 * i);
                    button.Dock = DockStyle.Top;
                    button.FlatStyle = FlatStyle.Popup;
                    button.Margin = new Padding(0, 0, 0, 0);
                    button.Size = new Size(1200, 30);
                    if (i == 0)
                    {
                        button.Text = "+ Prisustvo";
                        button.Click += delegate { buttonPrisustvoRazrednistvo_Click(button, e, u, p); };
                    }
                    else
                    {
                        button.Text = "+ Ocjene";
                        button.Click += delegate { buttonOcjeneRazrednistvo_Click(button, e, u, p); };
                    }
                    button.TextAlign = ContentAlignment.MiddleLeft;
                    button.UseVisualStyleBackColor = false;
                    FlowLayoutPanel flow = new FlowLayoutPanel();
                    flow.Dock = System.Windows.Forms.DockStyle.Top;
                    flow.Location = new System.Drawing.Point(1, 71);
                    flow.Margin = new Padding(0, 0, 0, 0);
                    flow.Size = new Size(1200, 0);
                    flowPojediniPredmetRazrednistvo.Controls.Add(button);
                    flowPojediniPredmetRazrednistvo.Controls.Add(flow);
                }
            }
            else
            {
                buttonPojediniPredmetRazrednistvo.Text = '+' + buttonPojediniPredmetRazrednistvo.Text.Remove(0, 1);
                flowPojediniPredmetRazrednistvo.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowPojediniPredmetRazrednistvo);
                flowPojediniPredmetRazrednistvo.Parent.Height = flowPojediniPredmetRazrednistvo.Parent.Height - 60;
                flowPojediniPredmetRazrednistvo.Parent.Parent.Height = flowPojediniPredmetRazrednistvo.Parent.Parent.Height - 60;
                flowPanelRazrednistvo.Height = flowPanelRazrednistvo.Height - 60;
                flowPojediniPredmetRazrednistvo.Controls.Clear();
            }
        }

        private void buttonPrisustvoRazrednistvo_Click(object sender, EventArgs e, Ucenik u, Predmet p)
        {
            Button buttonPrisustvoRazrednistvo = sender as Button;
            FlowLayoutPanel flowPrisustvoRazrednistvo = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonPrisustvoRazrednistvo.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonPrisustvoRazrednistvo == listaButtona[i])
                {
                    flowPrisustvoRazrednistvo = listaPanela[i];
                    break;
                }
            }
            if (buttonPrisustvoRazrednistvo.Text[0] == '+')
            {
                buttonPrisustvoRazrednistvo.Text = '-' + buttonPrisustvoRazrednistvo.Text.Remove(0, 1);
                flowPrisustvoRazrednistvo.Size = new Size(1200, 215);
                flowPrisustvoRazrednistvo.Parent.Height = flowPrisustvoRazrednistvo.Parent.Height + 215;
                flowPrisustvoRazrednistvo.Parent.Parent.Height = flowPrisustvoRazrednistvo.Parent.Parent.Height + 215;
                flowPrisustvoRazrednistvo.Parent.Parent.Parent.Height = flowPrisustvoRazrednistvo.Parent.Parent.Parent.Height + 215;
                flowPrisustvoRazrednistvo.Parent.Parent.Parent.Parent.Height = flowPrisustvoRazrednistvo.Parent.Parent.Parent.Parent.Height + 215;
                flowPanelRazrednistvo.Height = flowPanelRazrednistvo.Height + 215;
                PrisustvoKontrola prisustva = new PrisustvoKontrola(pedagog, u.ID, p.ID);
                flowPrisustvoRazrednistvo.Controls.Add(prisustva);
            }
            else
            {
                buttonPrisustvoRazrednistvo.Text = '+' + buttonPrisustvoRazrednistvo.Text.Remove(0, 1);
                flowPrisustvoRazrednistvo.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowPrisustvoRazrednistvo);
                flowPrisustvoRazrednistvo.Parent.Height = flowPrisustvoRazrednistvo.Parent.Height - 215;
                flowPrisustvoRazrednistvo.Parent.Parent.Height = flowPrisustvoRazrednistvo.Parent.Parent.Height - 215;
                flowPrisustvoRazrednistvo.Parent.Parent.Parent.Height = flowPrisustvoRazrednistvo.Parent.Parent.Parent.Height - 215;
                flowPrisustvoRazrednistvo.Parent.Parent.Parent.Parent.Height = flowPrisustvoRazrednistvo.Parent.Parent.Parent.Parent.Height - 215;
                flowPanelRazrednistvo.Height = flowPanelRazrednistvo.Height - 215;
                flowPrisustvoRazrednistvo.Controls.Clear();
            }
        }

        private void buttonOcjeneRazrednistvo_Click(object sender, EventArgs e, Ucenik u, Predmet p)
        {
            Button buttonOcjeneRazrednistvo = sender as Button;
            FlowLayoutPanel flowOcjeneRazrednistvo = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonOcjeneRazrednistvo.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonOcjeneRazrednistvo == listaButtona[i])
                {
                    flowOcjeneRazrednistvo = listaPanela[i];
                    break;
                }
            }
            if (buttonOcjeneRazrednistvo.Text[0] == '+')
            {
                buttonOcjeneRazrednistvo.Text = '-' + buttonOcjeneRazrednistvo.Text.Remove(0, 1);
                flowOcjeneRazrednistvo.Size = new Size(1200, 215);
                flowOcjeneRazrednistvo.Parent.Height = flowOcjeneRazrednistvo.Parent.Height + 215;
                flowOcjeneRazrednistvo.Parent.Parent.Height = flowOcjeneRazrednistvo.Parent.Parent.Height + 215;
                flowOcjeneRazrednistvo.Parent.Parent.Parent.Height = flowOcjeneRazrednistvo.Parent.Parent.Parent.Height + 215;
                flowPanelRazrednistvo.Height = flowPanelRazrednistvo.Height + 215;
                OcjenaKontrola ocjene = new OcjenaKontrola(pedagog, u.ID, p.ID);
                flowOcjeneRazrednistvo.Controls.Add(ocjene);
            }
            else
            {
                buttonOcjeneRazrednistvo.Text = '+' + buttonOcjeneRazrednistvo.Text.Remove(0, 1);
                flowOcjeneRazrednistvo.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowOcjeneRazrednistvo);
                flowOcjeneRazrednistvo.Parent.Height = flowOcjeneRazrednistvo.Parent.Height - 215;
                flowOcjeneRazrednistvo.Parent.Parent.Height = flowOcjeneRazrednistvo.Parent.Parent.Height - 215;
                flowOcjeneRazrednistvo.Parent.Parent.Parent.Height = flowOcjeneRazrednistvo.Parent.Parent.Parent.Height - 215;
                flowPanelRazrednistvo.Height = flowPanelRazrednistvo.Height - 215;
                flowOcjeneRazrednistvo.Controls.Clear();
            }
        }

        private void buttonSmanjenjeVladanja_Click(object sender, EventArgs e)
        {
            Button buttonSmanjenjeVladanja = sender as Button;
            FlowLayoutPanel flowSmanjenjeVladanja = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonSmanjenjeVladanja.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonSmanjenjeVladanja == listaButtona[i])
                {
                    flowSmanjenjeVladanja = listaPanela[i];
                    break;
                }
            }
            DAL.DAL dal = DAL.DAL.Instanca;
            dal.kreirajKonekciju("127.0.0.1", "skola", "root", "");
            DAL.DAL.UcenikRazredVezaDAO urvdao = new DAL.DAL.UcenikRazredVezaDAO();
            List<UcenikRazredVeza> ucenikRazred = urvdao.getByRazredId(pedagog.Razrednistvo.ID);
            List<Ucenik> ucenici = new List<Ucenik>();
            foreach (UcenikRazredVeza urv in ucenikRazred)
            {
                DAL.DAL.UcenikDAO udao = new DAL.DAL.UcenikDAO();
                Ucenik uc = udao.getById(urv.UcenikID);
                ucenici.Add(uc);
            }
            dal.terminirajKonekciju();
            int brojUcenika = ucenici.Count;
            if (buttonSmanjenjeVladanja.Text[0] == '+')
            {
                buttonSmanjenjeVladanja.Text = '-' + buttonSmanjenjeVladanja.Text.Remove(0, 1);
                flowSmanjenjeVladanja.Height = flowSmanjenjeVladanja.Height + 30 * brojUcenika;
                flowPanelRazrednistvo.Height = flowPanelRazrednistvo.Height + 30 * brojUcenika;
                for (int i = 0; i < brojUcenika; i++)
                {
                    Button buttonPojediniUcenik = new Button();
                    buttonPojediniUcenik.BackColor = Color.CornflowerBlue;
                    buttonPojediniUcenik.Dock = DockStyle.Top;
                    buttonPojediniUcenik.FlatStyle = FlatStyle.Popup;
                    buttonPojediniUcenik.Location = new Point(1, 1 + 30 * i);
                    buttonPojediniUcenik.Margin = new Padding(0, 0, 0, 0);
                    buttonPojediniUcenik.Size = new Size(1200, 30);
                    buttonPojediniUcenik.Text = "+ " + ucenici[i].Ime + " " + ucenici[i].Prezime;
                    buttonPojediniUcenik.TextAlign = ContentAlignment.MiddleLeft;
                    buttonPojediniUcenik.UseVisualStyleBackColor = false;
                    buttonPojediniUcenik.Click += delegate { buttonPojediniUcenikSmanjenjeVladanja_Click(buttonPojediniUcenik, e, ucenici[i]); };
                    FlowLayoutPanel flowPojediniPredmet = new FlowLayoutPanel();
                    flowPojediniPredmet.Dock = System.Windows.Forms.DockStyle.Top;
                    flowPojediniPredmet.Location = new System.Drawing.Point(1, 71);
                    flowPojediniPredmet.Margin = new Padding(0, 0, 0, 0);
                    flowPojediniPredmet.Size = new Size(1200, 0);
                    flowSmanjenjeVladanja.Controls.Add(buttonPojediniUcenik);
                    flowSmanjenjeVladanja.Controls.Add(flowPojediniPredmet);
                }
            }
            else
            {
                buttonSmanjenjeVladanja.Text = '+' + buttonSmanjenjeVladanja.Text.Remove(0, 1);
                flowSmanjenjeVladanja.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowSmanjenjeVladanja);
                flowPanelRazrednistvo.Height = flowPanelRazrednistvo.Height - 30 * brojUcenika;
                flowSmanjenjeVladanja.Controls.Clear();
            }
        }

        private void buttonPojediniUcenikSmanjenjeVladanja_Click(object sender, EventArgs e, Ucenik u)
        {
            Button buttonPojediniUcenik = sender as Button;
            FlowLayoutPanel flowPojediniUcenik = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonPojediniUcenik.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonPojediniUcenik == listaButtona[i])
                {
                    flowPojediniUcenik = listaPanela[i];
                    break;
                }
            }
            if (buttonPojediniUcenik.Text[0] == '+')
            {
                buttonPojediniUcenik.Text = '-' + buttonPojediniUcenik.Text.Remove(0, 1);
                flowPanelRazrednistvo.Height = flowPanelRazrednistvo.Height + 215;
                flowPojediniUcenik.Parent.Height = flowPojediniUcenik.Parent.Height + 215;
                flowPojediniUcenik.Size = new Size(1200, 215);
                SmanjenjeVladanjaKontrola smanjenjeVladanja = new SmanjenjeVladanjaKontrola(pedagog as Profesor, u.ID);
                flowPojediniUcenik.Controls.Add(smanjenjeVladanja);
            }
            else
            {
                buttonPojediniUcenik.Text = '+' + buttonPojediniUcenik.Text.Remove(0, 1);
                flowPojediniUcenik.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowPojediniUcenik);
                flowPojediniUcenik.Parent.Height = flowPojediniUcenik.Parent.Height - 215;
                flowPanelRazrednistvo.Height = flowPanelRazrednistvo.Height - 215;
                flowPojediniUcenik.Controls.Clear();
            }
        }

        private void buttonUcenici_Click_1(object sender, EventArgs e)
        {
            if (buttonUcenici.Text[0] == '+')
            {
                buttonUcenici.Text = '-' + buttonUcenici.Text.Remove(0, 1);
                DAL.DAL dal = DAL.DAL.Instanca;
                dal.kreirajKonekciju("127.0.0.1", "skola", "root", "");
                DAL.DAL.RazredDAO rdao = new DAL.DAL.RazredDAO();
                List<Razred> razredi = rdao.getAll();
                foreach(Razred r in razredi)
                {
                    DAL.DAL.SkolskaGodinaDAO sgdoa = new DAL.DAL.SkolskaGodinaDAO();
                    SkolskaGodina skolska = sgdoa.getById(r.SkolskaGodinaID);
                    if(skolska.Kraj>DateTime.Now&&skolska.Pocetak<DateTime.Now)
                    { }
                    else
                    {
                        razredi.Remove(r);
                    }
                }
                dal.terminirajKonekciju();
                int brojOdjeljenjaUSkoli = razredi.Count;
                flowPanelUcenici.Size = new Size(1200, 30 * brojOdjeljenjaUSkoli);
                for (int i = 0; i < brojOdjeljenjaUSkoli; i++)
                {
                    Button buttonPojedinoOdjeljenje = new Button();
                    buttonPojedinoOdjeljenje.BackColor = Color.RoyalBlue;
                    buttonPojedinoOdjeljenje.Dock = DockStyle.Top;
                    buttonPojedinoOdjeljenje.FlatStyle = FlatStyle.Popup;
                    buttonPojedinoOdjeljenje.Location = new Point(0, 0);
                    buttonPojedinoOdjeljenje.Margin = new Padding(0, 0, 0, 0);
                    buttonPojedinoOdjeljenje.Size = new Size(1200, 30);
                    buttonPojedinoOdjeljenje.Text = "+ " + razredi[i].Godina + "-" + razredi[i].Odjeljenje;
                    buttonPojedinoOdjeljenje.TextAlign = ContentAlignment.MiddleLeft;
                    buttonPojedinoOdjeljenje.UseVisualStyleBackColor = false;
                    buttonPojedinoOdjeljenje.Click += delegate { buttonPojedinoOdjeljenjeUcenici_Click(buttonPojedinoOdjeljenje,e,razredi[i]); };
                    FlowLayoutPanel flowPojedinoOdjeljenje = new FlowLayoutPanel();
                    flowPojedinoOdjeljenje.Dock = System.Windows.Forms.DockStyle.Top;
                    flowPojedinoOdjeljenje.Location = new Point(0, 0);
                    flowPojedinoOdjeljenje.Margin = new Padding(0, 0, 0, 0);
                    flowPojedinoOdjeljenje.Size = new Size(1200, 0);
                    flowPanelUcenici.Controls.Add(buttonPojedinoOdjeljenje);
                    flowPanelUcenici.Controls.Add(flowPojedinoOdjeljenje);
                }
            }
            else
            {
                buttonUcenici.Text = '+' + buttonUcenici.Text.Remove(0, 1);
                flowPanelUcenici.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowPanelUcenici);
                flowPanelUcenici.Controls.Clear();
            }
        }

        private void buttonPojedinoOdjeljenjeUcenici_Click(object sender, EventArgs e,Razred r)
        {
            Button buttonPojedinoOdjeljenje = sender as Button;
            FlowLayoutPanel flowPojedinoOdjeljenje = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonPojedinoOdjeljenje.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonPojedinoOdjeljenje == listaButtona[i])
                {
                    flowPojedinoOdjeljenje = listaPanela[i];
                    break;
                }
            }
            DAL.DAL dal = DAL.DAL.Instanca;
            dal.kreirajKonekciju("127.0.0.1", "skola", "root", "");
            DAL.DAL.UcenikRazredVezaDAO urvdao = new DAL.DAL.UcenikRazredVezaDAO();
            List<UcenikRazredVeza> ucenikRazred = urvdao.getByRazredId(pedagog.Razrednistvo.ID);
            List<Ucenik> ucenici = new List<Ucenik>();
            foreach (UcenikRazredVeza urv in ucenikRazred)
            {
                DAL.DAL.UcenikDAO udao = new DAL.DAL.UcenikDAO();
                Ucenik uc = udao.getById(urv.UcenikID);
                ucenici.Add(uc);
            }
            dal.terminirajKonekciju();
            int brojUcenika = ucenici.Count;
            if (buttonPojedinoOdjeljenje.Text[0] == '+')
            {
                buttonPojedinoOdjeljenje.Text = '-' + buttonPojedinoOdjeljenje.Text.Remove(0, 1);
                flowPojedinoOdjeljenje.Height = flowPojedinoOdjeljenje.Height + 30 * brojUcenika;
                flowPanelUcenici.Height = flowPanelUcenici.Height + 30 * brojUcenika;
                for (int i = 0; i < brojUcenika; i++)
                {
                    Button buttonPojediniUcenici = new Button();
                    buttonPojediniUcenici.BackColor = Color.CornflowerBlue;
                    buttonPojediniUcenici.Dock = DockStyle.Top;
                    buttonPojediniUcenici.FlatStyle = FlatStyle.Popup;
                    buttonPojediniUcenici.Location = new Point(1, 1 + 30 * i);
                    buttonPojediniUcenici.Margin = new Padding(0, 0, 0, 0);
                    buttonPojediniUcenici.Size = new Size(1200, 30);
                    buttonPojediniUcenici.Text = "+ "+ucenici[i].Ime+" "+ucenici[i].Prezime;
                    buttonPojediniUcenici.TextAlign = ContentAlignment.MiddleLeft;
                    buttonPojediniUcenici.UseVisualStyleBackColor = false;
                    buttonPojediniUcenici.Click += delegate { buttonPojediniUcenikUcenici_Click(buttonPojedinoOdjeljenje,e,r,ucenici[i]); };
                    FlowLayoutPanel flowPojediniUcenik = new FlowLayoutPanel();
                    flowPojediniUcenik.Dock = System.Windows.Forms.DockStyle.Top;
                    flowPojediniUcenik.Location = new System.Drawing.Point(1, 71);
                    flowPojediniUcenik.Margin = new Padding(0, 0, 0, 0);
                    flowPojediniUcenik.Size = new Size(1200, 0);
                    flowPojedinoOdjeljenje.Controls.Add(buttonPojediniUcenici);
                    flowPojedinoOdjeljenje.Controls.Add(flowPojediniUcenik);
                }
            }
            else
            {
                buttonPojedinoOdjeljenje.Text = '+' + buttonPojedinoOdjeljenje.Text.Remove(0, 1);
                flowPojedinoOdjeljenje.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowPojedinoOdjeljenje);
                flowPanelUcenici.Height = flowPanelUcenici.Height - 30 * brojUcenika;
                flowPojedinoOdjeljenje.Controls.Clear();
            }
        }

        private void buttonPojediniUcenikUcenici_Click(object sender, EventArgs e,Razred r,Ucenik u)
        {
            Button buttonPojediniUcenik = sender as Button;
            FlowLayoutPanel flowPojediniUcenik = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonPojediniUcenik.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonPojediniUcenik == listaButtona[i])
                {
                    flowPojediniUcenik = listaPanela[i];
                    break;
                }
            }
            if (buttonPojediniUcenik.Text[0] == '+')
            {
                buttonPojediniUcenik.Text = '-' + buttonPojediniUcenik.Text.Remove(0, 1);
                flowPojediniUcenik.Height = flowPojediniUcenik.Height + 90;
                flowPojediniUcenik.Parent.Height = flowPojediniUcenik.Parent.Height + 90;
                flowPanelUcenici.Height = flowPanelUcenici.Height + 90;
                for (int i = 0; i < 3; i++)
                {
                    Button button = new Button();
                    button.BackColor = Color.LightSteelBlue;
                    button.Location = new Point(0, 30 * i);
                    button.Dock = DockStyle.Top;
                    button.FlatStyle = FlatStyle.Popup;
                    button.Margin = new Padding(0, 0, 0, 0);
                    button.Size = new Size(1200, 30);
                    if (i == 0)
                    {
                        button.Text = "+ Psiholoski profil";
                        button.Click += delegate { buttonPsiholoskiProfil_Click(button,e,r,u); };
                    }
                    else if (i == 1)
                    {
                        button.Text = "+ Vladanje";
                        button.Click += delegate { buttonVladanjeUcenici_Click(button, e, r, u); };
                    }
                    else
                    {
                        button.Text = "+ Predmeti";
                        button.Click += delegate { buttonPredmetiUcenici_Click(button, e, r, u); };
                    }
                    button.TextAlign = ContentAlignment.MiddleLeft;
                    button.UseVisualStyleBackColor = false;
                    FlowLayoutPanel flow = new FlowLayoutPanel();
                    flow.Dock = System.Windows.Forms.DockStyle.Top;
                    flow.Location = new System.Drawing.Point(1, 71);
                    flow.Margin = new Padding(0, 0, 0, 0);
                    flow.Size = new Size(1200, 0);
                    flowPojediniUcenik.Controls.Add(button);
                    flowPojediniUcenik.Controls.Add(flow);
                }
            }
            else
            {
                buttonPojediniUcenik.Text = '+' + buttonPojediniUcenik.Text.Remove(0, 1);
                flowPojediniUcenik.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowPojediniUcenik);
                flowPojediniUcenik.Parent.Height = flowPojediniUcenik.Parent.Height - 90;
                flowPanelUcenici.Height = flowPanelUcenici.Height - 90;
            }
        }


        private void buttonPsiholoskiProfil_Click(object sender, EventArgs e,Razred r,Ucenik u)
        {
            Button buttonPsiholoskiProfil = sender as Button;
            FlowLayoutPanel flowPsiholoskiProfil = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonPsiholoskiProfil.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonPsiholoskiProfil == listaButtona[i])
                {
                    flowPsiholoskiProfil = listaPanela[i];
                    break;
                }
            }
            if (buttonPsiholoskiProfil.Text[0] == '+')
            {
                buttonPsiholoskiProfil.Text = '-' + buttonPsiholoskiProfil.Text.Remove(0, 1);
                flowPsiholoskiProfil.Height = flowPsiholoskiProfil.Height + 200;
                flowPsiholoskiProfil.Parent.Height = flowPsiholoskiProfil.Parent.Height + 200;
                flowPsiholoskiProfil.Parent.Parent.Height = flowPsiholoskiProfil.Parent.Parent.Height + 200;
                flowPanelUcenici.Height = flowPanelUcenici.Height + 200;
                PsiholoskiProfilKontrola psiholoskiProfil = new PsiholoskiProfilKontrola(pedagog,u.ID);
                flowPsiholoskiProfil.Controls.Add(psiholoskiProfil);
            }
            else
            {
                buttonPsiholoskiProfil.Text = '+' + buttonPsiholoskiProfil.Text.Remove(0, 1);
                flowPsiholoskiProfil.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowPsiholoskiProfil);
                flowPsiholoskiProfil.Parent.Height = flowPsiholoskiProfil.Parent.Height - 200;
                flowPsiholoskiProfil.Parent.Parent.Height = flowPsiholoskiProfil.Parent.Parent.Height - 200;
                flowPanelUcenici.Height = flowPanelUcenici.Height - 200;
                flowPsiholoskiProfil.Controls.Clear();
            }
        }


        private void buttonVladanjeUcenici_Click(object sender, EventArgs e,Razred r,Ucenik u)
        {
            Button buttonVladanje = sender as Button;
            FlowLayoutPanel flowVladanje = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonVladanje.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonVladanje == listaButtona[i])
                {
                    flowVladanje = listaPanela[i];
                    break;
                }
            }
            if (buttonVladanje.Text[0] == '+')
            {
                buttonVladanje.Text = '-' + buttonVladanje.Text.Remove(0, 1);
                flowVladanje.Height = flowVladanje.Height + 215;
                flowVladanje.Parent.Height = flowVladanje.Parent.Height + 215;
                flowVladanje.Parent.Parent.Height = flowVladanje.Parent.Parent.Height + 215;
                flowPanelUcenici.Height = flowPanelUcenici.Height + 215;
                SmanjenjeVladanjaKontrola smanjenjeVladanja = new SmanjenjeVladanjaKontrola(pedagog as Pedagog,u.ID);
                flowVladanje.Controls.Add(smanjenjeVladanja);
            }
            else
            {
                buttonVladanje.Text = '+' + buttonVladanje.Text.Remove(0, 1);
                flowVladanje.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowVladanje);
                flowVladanje.Parent.Height = flowVladanje.Parent.Height - 215;
                flowVladanje.Parent.Parent.Height = flowVladanje.Parent.Parent.Height - 215;
                flowPanelUcenici.Height = flowPanelUcenici.Height - 215;
                flowVladanje.Controls.Clear();
            }
        }

        private void buttonPredmetiUcenici_Click(object sender, EventArgs e,Razred r,Ucenik u)
        {
            Button buttonPredmetiUcenici = sender as Button;
            FlowLayoutPanel flowPredmetiUcenici = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonPredmetiUcenici.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonPredmetiUcenici == listaButtona[i])
                {
                    flowPredmetiUcenici = listaPanela[i];
                    break;
                }
            }
            DAL.DAL dal = DAL.DAL.Instanca;
            dal.kreirajKonekciju("127.0.0.1", "skola", "root", "");
            DAL.DAL.RazredPredmetVezaDAO rpvdao = new DAL.DAL.RazredPredmetVezaDAO();
            List<RazredPredmetVeza> razredPredmet = rpvdao.getByRazredId(r.ID);
            List<Predmet> predmeti = new List<Predmet>();
            foreach(RazredPredmetVeza rpv in razredPredmet)
            {
                DAL.DAL.PredmetDAO pdao = new DAL.DAL.PredmetDAO();
                Predmet p = pdao.getById(rpv.PredmetID);
                predmeti.Add(p);
            }
            dal.terminirajKonekciju();
            int brojPredmetaKojeUcenikSlusa = predmeti.Count;
            if (buttonPredmetiUcenici.Text[0] == '+')
            {
                buttonPredmetiUcenici.Text = '-' + buttonPredmetiUcenici.Text.Remove(0, 1);
                flowPredmetiUcenici.Height = flowPredmetiUcenici.Height + 30 * brojPredmetaKojeUcenikSlusa;
                flowPredmetiUcenici.Parent.Height = flowPredmetiUcenici.Parent.Height + 30 * brojPredmetaKojeUcenikSlusa;
                flowPredmetiUcenici.Parent.Parent.Height = flowPredmetiUcenici.Parent.Parent.Height + 30 * brojPredmetaKojeUcenikSlusa;
                flowPanelUcenici.Height = flowPanelUcenici.Height + 30 * brojPredmetaKojeUcenikSlusa;
                for (int i = 0; i < brojPredmetaKojeUcenikSlusa; i++)
                {
                    Button buttonPojediniPredmet = new Button();
                    buttonPojediniPredmet.BackColor = Color.DeepSkyBlue;
                    buttonPojediniPredmet.Dock = DockStyle.Top;
                    buttonPojediniPredmet.FlatStyle = FlatStyle.Popup;
                    buttonPojediniPredmet.Location = new Point(1, 1 + 30 * i);
                    buttonPojediniPredmet.Margin = new Padding(0, 0, 0, 0);
                    buttonPojediniPredmet.Size = new Size(1200, 30);
                    buttonPojediniPredmet.Text = "+ "+predmeti[i].PuniNaziv;
                    buttonPojediniPredmet.TextAlign = ContentAlignment.MiddleLeft;
                    buttonPojediniPredmet.UseVisualStyleBackColor = false;
                    buttonPojediniPredmet.Click += delegate { buttonPojediniPredmetUcenici_Click(buttonPojediniPredmet,e,r,u,predmeti[i]); };
                    FlowLayoutPanel flowPojediniPredmet = new FlowLayoutPanel();
                    flowPojediniPredmet.Dock = System.Windows.Forms.DockStyle.Top;
                    flowPojediniPredmet.Location = new System.Drawing.Point(1, 71);
                    flowPojediniPredmet.Margin = new Padding(0, 0, 0, 0);
                    flowPojediniPredmet.Size = new Size(1200, 0);
                    flowPredmetiUcenici.Controls.Add(buttonPojediniPredmet);
                    flowPredmetiUcenici.Controls.Add(flowPojediniPredmet);
                }
            }
            else
            {
                buttonPredmetiUcenici.Text = '+' + buttonPredmetiUcenici.Text.Remove(0, 1);
                flowPredmetiUcenici.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowPredmetiUcenici);
                flowPredmetiUcenici.Parent.Height = flowPredmetiUcenici.Parent.Height - 30 * brojPredmetaKojeUcenikSlusa;
                flowPredmetiUcenici.Parent.Parent.Height = flowPredmetiUcenici.Parent.Parent.Height - 30 * brojPredmetaKojeUcenikSlusa;
                flowPanelUcenici.Height = flowPanelUcenici.Height - 30 * brojPredmetaKojeUcenikSlusa;
                flowPredmetiUcenici.Controls.Clear();
            }
        }

        private void buttonPojediniPredmetUcenici_Click(object sender, EventArgs e,Razred r,Ucenik u,Predmet p)
        {
            Button buttonPojediniPredmet = sender as Button;
            FlowLayoutPanel flowPojediniPredmet = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonPojediniPredmet.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonPojediniPredmet == listaButtona[i])
                {
                    flowPojediniPredmet = listaPanela[i];
                    break;
                }
            }
            if (buttonPojediniPredmet.Text[0] == '+')
            {
                buttonPojediniPredmet.Text = '-' + buttonPojediniPredmet.Text.Remove(0, 1);
                flowPojediniPredmet.Size = new Size(1200, 60);
                flowPojediniPredmet.Parent.Height = flowPojediniPredmet.Parent.Height + 60;
                flowPojediniPredmet.Parent.Parent.Height = flowPojediniPredmet.Parent.Parent.Height + 60;
                flowPojediniPredmet.Parent.Parent.Parent.Height = flowPojediniPredmet.Parent.Parent.Parent.Height + 60;
                flowPanelUcenici.Height = flowPanelUcenici.Height + 60;
                for (int i = 0; i < 2; i++)
                {
                    Button button = new Button();
                    button.BackColor = Color.LightBlue;
                    button.Location = new Point(0, 30 * i);
                    button.Dock = DockStyle.Top;
                    button.FlatStyle = FlatStyle.Popup;
                    button.Margin = new Padding(0, 0, 0, 0);
                    button.Size = new Size(1200, 30);
                    if (i == 0)
                    {
                        button.Text = "+ Prisustvo";
                        button.Click += delegate { buttonPrisustvoUcenici_Click(button, e, r, u, p); };
                    }
                    else
                    {
                        button.Text = "+ Ocjene";
                        button.Click += delegate { buttonOcjeneUcenici_Click(button, e, r, u, p); };
                    }
                    button.TextAlign = ContentAlignment.MiddleLeft;
                    button.UseVisualStyleBackColor = false;
                    FlowLayoutPanel flow = new FlowLayoutPanel();
                    flow.Dock = System.Windows.Forms.DockStyle.Top;
                    flow.Location = new System.Drawing.Point(1, 71);
                    flow.Margin = new Padding(0, 0, 0, 0);
                    flow.Size = new Size(1200, 0);
                    flowPojediniPredmet.Controls.Add(button);
                    flowPojediniPredmet.Controls.Add(flow);
                }
            }
            else
            {
                buttonPojediniPredmet.Text = '+' + buttonPojediniPredmet.Text.Remove(0, 1);
                flowPojediniPredmet.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowPojediniPredmet);
                flowPojediniPredmet.Parent.Height = flowPojediniPredmet.Parent.Height - 60;
                flowPojediniPredmet.Parent.Parent.Height = flowPojediniPredmet.Parent.Parent.Height - 60;
                flowPojediniPredmet.Parent.Parent.Parent.Height = flowPojediniPredmet.Parent.Parent.Parent.Height - 60;
                flowPanelUcenici.Height = flowPanelUcenici.Height - 60;
                flowPojediniPredmet.Controls.Clear();
            }
        }

        private void buttonPrisustvoUcenici_Click(object sender, EventArgs e,Razred r,Ucenik u,Predmet p)
        {
            Button buttonPrisustvo = sender as Button;
            FlowLayoutPanel flowPrisustvo = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonPrisustvo.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonPrisustvo == listaButtona[i])
                {
                    flowPrisustvo = listaPanela[i];
                    break;
                }
            }
            if (buttonPrisustvo.Text[0] == '+')
            {
                buttonPrisustvo.Text = '-' + buttonPrisustvo.Text.Remove(0, 1);
                flowPrisustvo.Size = new Size(1200, 215);
                flowPrisustvo.Parent.Height = flowPrisustvo.Parent.Height + 215;
                flowPrisustvo.Parent.Parent.Height = flowPrisustvo.Parent.Parent.Height + 215;
                flowPrisustvo.Parent.Parent.Parent.Height = flowPrisustvo.Parent.Parent.Parent.Height + 215;
                flowPrisustvo.Parent.Parent.Parent.Parent.Height = flowPrisustvo.Parent.Parent.Parent.Parent.Height + 215;
                flowPanelUcenici.Height = flowPanelUcenici.Height + 215;
                PrisustvoKontrola prisustva = new PrisustvoKontrola(pedagog,u.ID,p.ID);
                flowPrisustvo.Controls.Add(prisustva);
            }
            else
            {
                buttonPrisustvo.Text = '+' + buttonPrisustvo.Text.Remove(0, 1);
                flowPrisustvo.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowPrisustvo);
                flowPrisustvo.Parent.Height = flowPrisustvo.Parent.Height - 215;
                flowPrisustvo.Parent.Parent.Height = flowPrisustvo.Parent.Parent.Height - 215;
                flowPrisustvo.Parent.Parent.Parent.Height = flowPrisustvo.Parent.Parent.Parent.Height - 215;
                flowPrisustvo.Parent.Parent.Parent.Parent.Height = flowPrisustvo.Parent.Parent.Parent.Parent.Height - 215;
                flowPanelUcenici.Height = flowPanelUcenici.Height - 215;
                flowPrisustvo.Controls.Clear();
            }
        }

        private void buttonOcjeneUcenici_Click(object sender, EventArgs e,Razred r,Ucenik u,Predmet p)
        {
            Button buttonOcjene = sender as Button;
            FlowLayoutPanel flowOcjene = new FlowLayoutPanel();
            List<Button> listaButtona = new List<Button>();
            List<FlowLayoutPanel> listaPanela = new List<FlowLayoutPanel>();
            foreach (Control c in buttonOcjene.Parent.Controls)
            {
                if (c is Button)
                    listaButtona.Add(c as Button);
                if (c is FlowLayoutPanel)
                    listaPanela.Add(c as FlowLayoutPanel);
            }
            for (int i = 0; i < listaButtona.Count; i++)
            {
                if (buttonOcjene == listaButtona[i])
                {
                    flowOcjene = listaPanela[i];
                    break;
                }
            }
            if (buttonOcjene.Text[0] == '+')
            {
                buttonOcjene.Text = '-' + buttonOcjene.Text.Remove(0, 1);
                flowOcjene.Size = new Size(1200, 215);
                flowOcjene.Parent.Height = flowOcjene.Parent.Height + 215;
                flowOcjene.Parent.Parent.Height = flowOcjene.Parent.Parent.Height + 215;
                flowOcjene.Parent.Parent.Parent.Height = flowOcjene.Parent.Parent.Parent.Height + 215;
                flowOcjene.Parent.Parent.Parent.Parent.Height = flowOcjene.Parent.Parent.Parent.Parent.Height + 215;
                flowPanelUcenici.Height = flowPanelUcenici.Height + 215;
                OcjenaKontrola ocjene = new OcjenaKontrola(pedagog, u.ID, p.ID);
                flowOcjene.Controls.Add(ocjene);
            }
            else
            {
                buttonOcjene.Text = '+' + buttonOcjene.Text.Remove(0, 1);
                flowOcjene.Size = new Size(1200, 0);
                funkcijaZatvaranjaButtona(flowOcjene);
                flowOcjene.Parent.Height = flowOcjene.Parent.Height - 215;
                flowOcjene.Parent.Parent.Height = flowOcjene.Parent.Parent.Height - 215;
                flowOcjene.Parent.Parent.Parent.Height = flowOcjene.Parent.Parent.Parent.Height - 215;
                flowOcjene.Parent.Parent.Parent.Parent.Height = flowOcjene.Parent.Parent.Parent.Parent.Height - 215;
                flowPanelUcenici.Height = flowPanelUcenici.Height - 215;
                flowOcjene.Controls.Clear();
            }
        }
    }
}
